package view;

/**
 * @author brunoAlbuquerque
 */
//import Relatorio.rel_Tabelas;
import Utilitarios.JtableTramitacao;
import Utilitarios.TamanhoMaximoTextField;
import dao.ProcessoDAO;
import dao.SetorDAO;

import dao.TipoDAO;
import dao.TramitacaoDAO;

import java.awt.Component;
import java.awt.Cursor;
import java.awt.Font;

import java.sql.SQLException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import static javax.management.Query.and;
import javax.persistence.Table;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.plaf.basic.BasicInternalFrameUI;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import model.Processo;
import model.Setor;
import model.Tipo;
import model.Tramitacao;

//import net.sf.jasperreports.engine.JRException;
public class frameRecebeProcesso extends javax.swing.JInternalFrame {

    int qtdPro = 0;
    private JtableTramitacao modeloTramitacao = new JtableTramitacao() {
        public boolean isCellEditable(int row, int column) {
            if (column < 3) {
                return false;
            } else {
                return true;
            }
        }
    };

    List<Tramitacao> lTramit = new ArrayList<Tramitacao>();

    public frameRecebeProcesso() {
        initComponents();

        int x;//apagar essa variavel

        tabelaBonus();// tabela();

        //Tira as barras de todos os lados da janela
        ((BasicInternalFrameUI) this.getUI()).setNorthPane(null);
        ((BasicInternalFrameUI) this.getUI()).setSouthPane(null);
        ((BasicInternalFrameUI) this.getUI()).setWestPane(null);
        ((BasicInternalFrameUI) this.getUI()).setEastPane(null);

//       monta_jTUnidade();
        monta_tableBonus();
        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount();
        if (linhaAtual > 0) {
            jTUnidade.changeSelection(0, 0, false, false);

        }

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        jPanel2 = new javax.swing.JPanel();
        btPrimeiro = new javax.swing.JButton();
        btAnterior = new javax.swing.JButton();
        btProximo = new javax.swing.JButton();
        btUltimo = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jScrollPanelTabela = new javax.swing.JScrollPane();
        jTUnidade = new javax.swing.JTable();
        jPanel1 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        btSair = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();

        setClosable(true);
        setTitle("Processos Recebidos");
        setToolTipText("");
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        btPrimeiro.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398710613_playback_ff (2).png"))); // NOI18N
        btPrimeiro.setToolTipText("Primeiro Registro");
        btPrimeiro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btPrimeiroActionPerformed(evt);
            }
        });
        getContentPane().add(btPrimeiro, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 530, -1, -1));

        btAnterior.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398710631_playback_play (2).png"))); // NOI18N
        btAnterior.setToolTipText("Registro Anterior");
        btAnterior.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAnteriorActionPerformed(evt);
            }
        });
        getContentPane().add(btAnterior, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 530, -1, -1));

        btProximo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398710631_playback_play.png"))); // NOI18N
        btProximo.setToolTipText("Próximo Registro");
        btProximo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btProximoActionPerformed(evt);
            }
        });
        getContentPane().add(btProximo, new org.netbeans.lib.awtextra.AbsoluteConstraints(640, 530, -1, -1));

        btUltimo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398710613_playback_ff.png"))); // NOI18N
        btUltimo.setToolTipText("Último Registro");
        btUltimo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btUltimoActionPerformed(evt);
            }
        });
        getContentPane().add(btUltimo, new org.netbeans.lib.awtextra.AbsoluteConstraints(700, 530, -1, -1));

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        jLabel1.setText("Processos Recebidos");
        getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 10, 620, 30));

        jTUnidade.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        jTUnidade.setToolTipText("Registro Cadastrados");
        jTUnidade.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTUnidadeMouseClicked(evt);
            }
        });
        jTUnidade.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                jTUnidadeKeyReleased(evt);
            }
        });
        jScrollPanelTabela.setViewportView(jTUnidade);

        getContentPane().add(jScrollPanelTabela, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 80, 680, 430));
        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 630, 740, 10));
        getContentPane().add(jPanel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 0, 20, 550));

        btSair.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/logout_user_login_account-3222.png"))); // NOI18N
        btSair.setToolTipText("Fechar o Cadastro das Unidade Métrica");
        btSair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btSairActionPerformed(evt);
            }
        });
        getContentPane().add(btSair, new org.netbeans.lib.awtextra.AbsoluteConstraints(690, 580, -1, -1));
        btSair.getAccessibleContext().setAccessibleDescription("Fechar ");

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1400086385_Check.png"))); // NOI18N
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(680, 30, -1, -1));

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btPrimeiroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btPrimeiroActionPerformed
        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount();
        if (linhaAtual > 0) {
            jTUnidade.changeSelection(0, 0, false, false);

        }

        btProximo.setEnabled(true);
        btUltimo.setEnabled(true);
        btPrimeiro.setEnabled(false);
        btAnterior.setEnabled(false);
    }//GEN-LAST:event_btPrimeiroActionPerformed

    private void btAnteriorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAnteriorActionPerformed
        int linhaAtual;
        linhaAtual = jTUnidade.getSelectedRow() - 1;
        if (linhaAtual > 0) {
            jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);

        }

        if ((linhaAtual - 1) < 0) {
            btPrimeiro.setEnabled(false);
            btAnterior.setEnabled(false);
        } else {
            btProximo.setEnabled(true);
            btUltimo.setEnabled(true);
        }
    }//GEN-LAST:event_btAnteriorActionPerformed

    private void btProximoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btProximoActionPerformed
        int linhaAtual, qdeLinhas;
        linhaAtual = jTUnidade.getSelectedRow() + 1;
        qdeLinhas = jTUnidade.getRowCount();

        if (linhaAtual > 0) {
            jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);

        }

        if ((linhaAtual + 1) == qdeLinhas) {
            btProximo.setEnabled(false);
            btUltimo.setEnabled(false);
        } else {
            btPrimeiro.setEnabled(true);
            btAnterior.setEnabled(true);
        }
    }//GEN-LAST:event_btProximoActionPerformed

    private void btUltimoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btUltimoActionPerformed
        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount();
        if (linhaAtual > 0) {
            linhaAtual = jTUnidade.getRowCount() - 1;
            jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);

        }

        btProximo.setEnabled(false);
        btUltimo.setEnabled(false);
        btPrimeiro.setEnabled(true);
        btAnterior.setEnabled(true);
    }//GEN-LAST:event_btUltimoActionPerformed

    private void jTUnidadeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTUnidadeMouseClicked

        qtdPro = qtdPro + 1;

    }//GEN-LAST:event_jTUnidadeMouseClicked

    private void jTUnidadeKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTUnidadeKeyReleased
        int linhaAtual;
        linhaAtual = jTUnidade.getSelectedRow();
        jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);

    }//GEN-LAST:event_jTUnidadeKeyReleased

    private void btSairActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSairActionPerformed
        saiTela();
    }//GEN-LAST:event_btSairActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        JOptionPane.showMessageDialog(null, "Processo(s) Recebido(s)!");
        gravaRegistro();
    }//GEN-LAST:event_jButton1ActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btAnterior;
    private javax.swing.JButton btPrimeiro;
    private javax.swing.JButton btProximo;
    private javax.swing.JButton btSair;
    private javax.swing.JButton btUltimo;
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JScrollPane jScrollPanelTabela;
    private javax.swing.JTable jTUnidade;
    // End of variables declaration//GEN-END:variables

    public void saiTela() {
        frameRecebeProcesso.this.dispose();
    }

    public void ajustaCursor(int tipo) {
        Cursor cursor;

        if (tipo == 0) {
            cursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
        } else {
            cursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
        }

        setCursor(cursor);

    }

//    private void monta_jTUnidade() {
////      Fachada f = new Fachada();
//
//        TramitacaoDAO udao = new TramitacaoDAO();
//
//        ArrayList<Tramitacao> lista = new ArrayList<Tramitacao>();
//        ArrayList<Tramitacao> lista2 = new ArrayList<Tramitacao>();
//
//        lista = udao.findAll2();
//        //  lista2=udao.pesquisaTramitacaoSetor();
//        for (int i = 0; i < lista.size(); i++) {
//
//        }
//    }
    private void tabelaBonus() {
        DefaultTableCellRenderer direita = new DefaultTableCellRenderer();
        DefaultTableCellRenderer centralizado = new DefaultTableCellRenderer();
        direita.setHorizontalAlignment(SwingConstants.RIGHT);
        centralizado.setHorizontalAlignment(SwingConstants.CENTER);

        jTUnidade.setModel(modeloTramitacao);
        jTUnidade.getColumnModel().getColumn(0).setPreferredWidth(10);
        jTUnidade.getColumnModel().getColumn(1).setPreferredWidth(20);
        jTUnidade.getColumnModel().getColumn(2).setPreferredWidth(20);
        // jTUnidade.getColumnModel().getColumn(3).setPreferredWidth(200);

        jTUnidade.getColumnModel().getColumn(0).setCellRenderer(centralizado);
        jTUnidade.getColumnModel().getColumn(1).setCellRenderer(centralizado);
        jTUnidade.getColumnModel().getColumn(2).setCellRenderer(direita);
        //jTUnidade.getColumnModel().getColumn(3).setCellRenderer(centralizado);

    }

    private void monta_tableBonus() {
        String ValString = "";
        DecimalFormat infoPercent = new DecimalFormat("###,##0.00");
        //  FachadaMovimento f = new FachadaMovimento();
        TramitacaoDAO tdao = new TramitacaoDAO();
        SetorDAO sdao = new SetorDAO();
        List<Setor> ss = new ArrayList<Setor>();
        Setor s = new Setor();
        List<Tramitacao> listatramit = new ArrayList<Tramitacao>();
        List<Tramitacao> ostramitis = new ArrayList<Tramitacao>();

        // String essFiltro = " BONUS.id_filiado = " + fPrincipal.nomeUsuario + " AND BONUS.mesano = '" + fPrincipal.mesANO + "'";
        // try {
        String x = fPrincipal.nomeSetor.trim();
        s = sdao.pesquisarSetorSiglaSingle(x);

//        listatramit = (ArrayList<Tramitacao>) tdao.pesquisaTramitacaoSetor(x);
        listatramit = tdao.pesquisaTramitacaoSetor(s.getSigla());

        //Adiciona no arrayList geral só as tramitações que não foram recebidas
        for (Tramitacao t1 : listatramit) {
            if (!(t1.isRecebido())) {
                lTramit.add(t1);
            }
        }
        // modeloTramitacao.setNumRows(0);
        modeloTramitacao.limpar();
        for (int i = 0; i < lTramit.size()-1; i++) {
            Tramitacao ts = new Tramitacao();
            ts.setProcesso((lTramit.get(i).getProcesso()));
            ts.setSetorReceb(lTramit.get(i).getSetorReceb());
            ts.getProcesso().setAssunto((lTramit.get(i).getProcesso().getAssunto()));
        }
        modeloTramitacao.addListaDeTramits(lTramit);
       // } catch (Exception e) {

        //  }
    }

    private void gravaRegistro() {

        String mens = "";
        int valor = 0;
        Tramitacao t = new Tramitacao();
        TramitacaoDAO tdao = new TramitacaoDAO();
        //Boolean p = t.isRecebido();

        for(Tramitacao t1 : lTramit){
            if(t1.isRecebido()){
                tdao.alterar(t1);
            }
        }
        
//        for (int i = 0; i < lTramit.size() - 1; i++) {
//            t = modeloTramitacao.getProcesso(i);
//            if (t.isRecebido()) {
//                t.setRecebido(true);
//                tdao.alterar(t);
//            }
//        }

        jTUnidade.setEnabled(true);
        //   modeloTramitacao.setNumRows(0);
        monta_tableBonus();

    }

}
